package com.aurora.source.di.dicomponent;

import com.aurora.source.di.dimodule.DiModule;
import com.aurora.source.util.netutil.RequestMethod;
import com.aurora.source.source.activity.SplashActivity;

import javax.inject.Singleton;

import dagger.Component;

/**
 * @author: wangbo
 * @description: 声明Component
 * @date: 2017-08-08   14:08
 */

/**
 * 当@module中声明了单例模式Singleton的时候在Component中也需要声明
 *
 * @ Component注解有两个属性，modules和dependencies这两个属性的类型都是Class数组，modules的作用就是声明该Component含有哪几个Module,当Component需要某个依赖对象时,就会通过这些Module类中对应的方法获取依赖对象
 * inject方法就是将module中对应方法取出的对象通过Component来把依赖需求方（MainActivity、RequestMethod）所需要的对象注入到依赖需求方
 */
@Singleton
@Component(modules = DiModule.class)
public interface DiComponent {
    void inject(RequestMethod requestMethod);
    void inject(SplashActivity splashActivity);
}
